An async iterator returns Promises from next(), following the Async Iterator Protocol with Symbol.asyncIterator. Values are resolved asynchronously.
Regular iterators return { value, done } directly. Async iterators return a Promise that resolves to { value, done }, allowing iteration over asynchronous data sources (e.g., streams, paginated APIs). They are consumed with for await...of loops.